/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DTO.PhieuDatPhong_DTO;
import DTO.Phong_DTO;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author Lenh Ho Xung
 */
public class PhieuDatPhong_DAO {

    private static String sqlString;
    private static MSSQLConnect cn;
    private static ResultSet rs;

    public static int Insert(PhieuDatPhong_DTO p) throws Exception {
        int n;
        sqlString = "INSERT INTO PHIEUDATPHONG (MaPhieuDat, MaKhach , NgayDen, NgayTra, TriGia, SoKhach) VALUES('"
                + p.getMaPhieuDat() + "','"
                + p.getMaKhach() + "','"
                + p.getNgayden() + "','"
                + p.getNgaydi() + "','"
                + p.getTrigia() + "','"
                + p.getSoKhach() + "')";

        //Kết nối CSDL
        try {
            cn = new MSSQLConnect();
            n = cn.executeUpdate(sqlString);
        } catch (Exception e) {
            throw new Exception("Không thể thêm vào cơ sơ dữ liệu");
        } finally {
            cn.Close();
        }
        return n;
    }

    public static String laymaMax() throws Exception {
        String maphieuMax = new String();
        sqlString = "SELECT TOP 1 MaPhieuDat FROM PhieuDatPhong ORDER BY MaPhieuDat DESC";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                maphieuMax = rs.getString("MaPhieuDat");
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy mã max");

        } finally {
            cn.Close();
        }
        return maphieuMax;
    }

    public static int Delete(String maPhieuDat) throws Exception {
        int n;
        sqlString = "DELETE FROM PhieuDatPhong WHERE MaPhieuDat='" + maPhieuDat + "'";
        try {
            cn = new MSSQLConnect();
            //Thực thi câu lệnh SQL
            n = cn.executeUpdate(sqlString);

        } catch (Exception e) {
            throw new Exception("Lỗi Kết Nối Cơ sở dữ liệu.");
        } finally {
            cn.Close();
        }
        return n;
    }

    public static String layMaPhieuDat(String maKhach) throws Exception {
        String maphieuDat = new String();
        sqlString = "SELECT MaPhieuDat FROM PHIEUDATPHONG WHERE MaKhach='" + maKhach + "' ";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                maphieuDat = rs.getString("MaPhieuDat");
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy mã phiếu đặt");

        } finally {
            cn.Close();
        }
        return maphieuDat;
    }

    public static ArrayList<PhieuDatPhong_DTO> layDSMaPhieuQuaHan(String ngayhientai) throws Exception {
        ArrayList<PhieuDatPhong_DTO> ds = new ArrayList<>();
        sqlString = "SELECT MaPhieuDat FROM PHIEUDATPHONG WHERE NgayDen<='" + ngayhientai + "' ";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                PhieuDatPhong_DTO p = new PhieuDatPhong_DTO();
                p.setMaPhieuDat(rs.getString("MaPhieuDat"));
                ds.add(p);
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phiếu quá hạn");

        } finally {
            cn.Close();
        }
        return ds;

    }

    public static ArrayList<Phong_DTO> layDSPhongDat(String maPhieuDat) throws Exception {
        ArrayList<Phong_DTO> ds = new ArrayList<>();
        sqlString = "SELECT MaPhong FROM CTPhieuDatPhong WHERE MaPhieuDat='" + maPhieuDat + "'";
        try {
            cn = new MSSQLConnect();
            rs = cn.excuteQuery(sqlString);
            while (rs.next()) {
                Phong_DTO p = new Phong_DTO();
                p.setMaPhong(rs.getString("MaPhong"));
                ds.add(p);
            }
        } catch (Exception e) {
            throw new Exception("Không thể lấy danh sách phòng");

        } finally {
            cn.Close();
        }
        return ds;

    }
}
